package com.example.simple_android.Manager;

import java.util.Map;

public interface Manager<T, S> {

    /**
     * 调用此方法，向管理者中添加被管理的对象
     *
     * @param key   被管理者的绑定值，可以通过此对象，在管理者中找到被管理的目标
     * @param value 被管理者
     */
    void register(T key, S value);

    /**
     * 注销被管理者，调用此方法将注销一个被管理者
     *
     * @param key 被管理者的绑定值
     */
    void unregister(T key);

    /**
     * 查看现有的所有被管理的对象
     *
     * @return 管理容器
     */
    Map<T, S> lookups();

    /**
     * 调用此方法，获取指定的被管理者
     *
     * @param key 被管理者的绑定值
     * @return 被管理者
     */
    S lookup(T key);

    /**
     * 调用此方法，清空管理者中所有被管理的对象
     */
    void clear();
}
